perm filename DTCTST.FAI[D,SYS] blob sn#362179 filedate 1978-06-21 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	TITLE DTCTST
C00007 ENDMK
C⊗;
TITLE DTCTST

A←1
B←2
C←3
D←4
E←5
P←17

APR←0
KLPAG←10
DTE0←200
DC←204
DTC←210
DTS←214

;KL10 PARAMETERS, ETC.
DTFLG←←444		;DTE20 OPERATION COMPLETE FLAG
DTF11←←450		;      FROM 11 ARGUMENT
DTCMD←←451		;      TO 11 COMMAND
DONG11←←20000				;DTE CONO BIT.  REQUEST 11 INTERRUPT

.LOAD EDDT[1,3]

LOC 74
	JRST DDT↑

LOC 200
	JRST GO
	JRST DDT↑

LOC 2000

GO:	CONO APR,200000		;RESET APR
	CONO KLPAG,0		;PUT EPT AT ZERO
	MOVE P,[-100,,PDL-1]
RETRY:	CONO DTC,203240		;UNIT SEL 4, TIME DLY 3, STOP FWD, FCN 2 (RBLK#)
	CONSZ DTS,2000		;WAIT FOR DELAY TO FINISH
	JRST .-1
	CONSZ DTS,4
	JRST RETRY		;ILLEGAL OP - WRITE PROT OR MULTIPLE SELECT
	CONO DTC,221240		;UNIT SEL 4, TIME DLY 1, START FWD, FCN 2 (RBLK#)
	CONO DC,4010		;START DC FOR INPUT
RWAIT:	CONSZ DTS,16
	JRST RERROR		;PAR ERR, ILLEGAL OP OR TAPE END
	CONSO DC,1000		;WAIT FOR DC DB RQ
	JRST RWAIT
	DATAI DC,A		;READ BLOCK NUMBER
	CONO DTC,203240		;STOP DRIVE
	JRST DDT↑

RERROR:	MOVEI B,[ASCIZ /LOSE
/]
	PUSHJ P,TYPE
	JRST DDT

TYPE:	HRLI B,440700
TYPE1:	ILDB A,B
	JUMPE A,CPOPJ
	PUSHJ P,DTEXX
	JRST TYPE1

DTEXX:	SETZM DTFLG
	MOVEM A,DTCMD
	CONO DTE0,DONG11
DTEXX1:	SKIPN DTF11
	JRST DTEXX1
CPOPJ:	POPJ P,

REPEAT 0,<
	MOVEI C,=2700
	MOVE A,[707707,,707707]
	JSP E,WDOUT
	SOJG C,.-1
	MOVEI D,1102
BLKLP:	MOVE A,[070707,,070770]
	JSP E,WDOUT
	MOVE A,[077070,,007000]
	JSP E,WDOUT
	HRLI A,007000
	JSP E,WDOUT
	HRRI A,777000
	JSP E,WDOUT
	MOVEI C,175
	HRLI A,777000
	JSP E,WDOUT
	SOJG C,.-1
	HRRI A,777077
	JSP E,WDOUT
	HRLI A,777077
	JSP E,WDOUT
	HRRI A,707007
	JSP E,WDOUT
	MOVE A,[700707,,070707]
	JSP E,WDOUT
	SOJG D,BLKLP
	MOVE A,[070070,,070070]
	MOVEI C,=2700
	JSP E,WDOUT
	SOJG C,.-1
BACKW:	CONO DTC,202510	;UNIT SEL 1, TIME DLY 2, STOP FWD, FCN 5 (WRITE ENTIRE TAPE)
	CONSZ DTS,2000		;WAIT FOR DELAY IN PROGRESS TO BE OVER
	JRST .-1
	CONSZ DTS,4
	JRST BACKW		;ILLEGAL OP
	CONO DTC,233510	;UNIT SEL 1, TIME DLY 3, START REV, FCN 5(WRITE ENTIRE TAPE)
	CONO DC,3410		;START DC WRITING
	MOVEI C,1101
	MOVEI D,1
RBLKLP:	MOVEI A,0
	CAIN D,1
	MOVE A,C
	CAIE D,2
	CAIN D,203
	MOVE A,[700600,,14300]		;CONO PI,14300
	CAIN D,3
	MOVEI A,77
	CAIN D,204
	JRST RBLKA
RBLKB:	JSP E,WDOUT
	SOJG D,RBLKLP
	MOVEI D,204
	SOJGE C,RBLKLP
	CONSZ DTS,40		;WAIT FOR WRITING TO FINISH
	JRST .-1
	CONO DTC,3000		;DESELECT, TIME DLY 3
	CONSZ DTS,2000		;WAIT FOR DELAY IN PROGRESS TO BE OVER
	JRST .-1
	JRST RETRY

;SEND A WORD TO THE DC FROM A.  CALL WITH JSP E,WDOUT
WDOUT:	CONSZ DTS,6
	JRST LOSE		;TAPE END OR ILLEGAL OP
	CONSO DC,1000		;WAIT FOR DC OUTPUT DONE (DC WANTS A WORD)
	JRST WDOUT
	DATAO DC,A		;FEED THE DC
	JRST (E)

LOSE:	DATAO TTY,DING
	CONO DTC,1000
	JRST 4,GO

RBLKA:	MOVE B,C
	ROT B,-3
	ROTC A,3
	ROT B,-6
	ROTC A,3
	ROT B,-6
	ROTC A,3
	ROT B,-6
	ROTC A,=27
DING:	SETCAI A,7
	JRST RBLKB
>;REPEAT 0

PDL:	BLOCK 100
PATCH:	BLOCK 100

END	GO